package com.cssiot.scala.basic

/*--------包（package com.xx.data）
支持嵌套，下层可以访问上层作用域中的名称
可串联
顶部标记
包对象
包可见性
包在任何地方都可以引入，作用域至该语句所在块的末尾
重命名引入成员（xx => yy）
隐藏方法（xx => _）
自动引入（java.lang._ scala._ Predef._）
--------模式匹配-----------------
标准用法（match）
使用守卫
匹配类型*/
class Basic5{
  
}


case class Book(name:String,author :String)

object Basic5 extends App{
    val value = 1
//    println("test")
    val  result =value match{
        case 1 => "one"
      case 2 => "two"
      case _ => "some other number"
    }
    
    val  result2 =value match{
        case i  if i==1 => "one"
      case i if i==2 => "two"
      case _ => "some other number"
    }
//    println(result2)
    def t(obj:Any)=obj  match {
      case i:Int => println("Int")
        case i:String => println("String")
    }
//    t("1")
    val t= List(1,2)
    val l=t.map(2*_)
//    println(l)
    val testPort=("12","test")
//     println(testPort)
    val testMap=Map("a"->"b","c"->"d")
     val testMap2=Map("a"->"b","c"->"d")
     val s=testMap.zip(testMap2)
//     println(s)
/*    println(testMap.get("a").get)
     println(testMap.get("s").getOrElse("none"))*/
     val mactalk=Book("mactalk","cjq")
     mactalk  match {
       case Book(name,author ) => println("this is book")
       case _=>println("unknown")
     }
    
    val list=List(1,2,3,4)
    val newl=list.filter { x => x%2==0 }
//    println(newl)
//    val nl=List(list,newl).flatten
     val nl=List(list,newl)
      println(nl.flatMap { x => x.map(_*2) })
    
 
}